Repository navigation
core: a read-only task board draws no write and says nothing in place about why - #2275
Conversation
A read-only window's task board already draws no write, but nothing inside the board said why: the host's read-only sentence lives in the sidebar banner and in the Settings hint, and the 1080px board overlay covers both. BoardView draws that same host sentence as one role=status line above the columns, so no new copy and no new style. A writable board draws nothing new.
93521dc to
22bfe12
Compare
|
@Birfy — review request for PR #2275 at tip T1: At this tip: 16 checks, all success, 0 failure, 0 cancelled; FlyBot Test independent advisory is PASS at this tip: no conflict markers anywhere in the tree; T1 does not need a merge-gate PASS — the green tip plus this report are enough; please enqueue it. |
… change (ThinkFlowLab#2265) Fixes ThinkFlowLab#2247 Owner: Dev2 Reviewer: Reviewer Claim-Id: ae99f17f04c0438ca64d71ddcfa6f1e9 Branch: dev/2-readonly-banner-reload Base: 55503e1 Tree: 1795cfb Verified commit: 4cf69b2 Pushed head: 4cf69b2 **Scope** — the read-only sidebar banner (wide and rail forms) carries a `Reload` control outside the live region, and the client can ask for a fresh state answer that is applied even when the revision is unchanged, so a window that has become writable picks the change up without a page reload. Re-tipped onto live main `55503e16b359` (after `ThinkFlowLab#2277`, `ThinkFlowLab#2290` and `ThinkFlowLab#2275`); `core/client.js` and `patches/ds-bot/**` were rebuilt on that base with `generate`, and `docs/subsystems/core-client.md` merged with `ThinkFlowLab#2275`'s kanban line intact — the file is this base plus exactly the `ThinkFlowLab#2247` bullet. The large generated diff is the usual `generate` re-alignment of the client bundle (the same shape `ThinkFlowLab#2277` and `ThinkFlowLab#2275` have); `core/client.js` against this base carries only the `ThinkFlowLab#2247` hunks. **Files** (13, +5996/−4469) - `core/src/client/sidebar.js` — the button in both banner forms - `core/src/client/sources.js`, `core/src/client/index.js` — the fresh request and its in-flight guard - `core/test/client-reload-state.test.js`, `core/test/sidebar-readonly-reload.test.js` — the new cases - `docs/subsystems/core-client.md`, `changelog.d/2247-readonly-banner-reload.fixed.md` - `core/client.js`, `patches/ds-bot/**` — the generated bundle and mirrors **Readings at `4cf69b209` (committed, clean tree)** - `TZ=UTC ARCH_DOCS_BASE=55503e16b359f034d71328f920aae6bbf674e0d1 npm run verify` — exit 0, 8 suites, **4656 tests / 4656 pass / 0 fail**, `arch-docs: OK (13 changed file(s))`. - `node core/scripts/build-client.mjs --check` — exit 0. - `node scripts/ds-bot-patches.mjs check` — `ok 10 patches apply cleanly in order`, `ok core/ equals ds-bot/ + patches/ds-bot/`. - `node scripts/ds-bot-patches.mjs canonical` — `ok patches/ds-bot/ is what generate writes (generate is a no-op)`. - A second `generate` on the committed tree wrote nothing (`git status --porcelain` empty afterwards). - Red first, on the clean `55503e16` tree with only the two new test files: **6 tests / 1 pass / 5 fail** — `sidebar-readonly-reload` red on the Reload control in both shapes, on Reload starting the full-state read, on a failed reload using the sidebar error channel, and on the two-shape style/rail rule; `client-reload-state` red as a file because the sources had no fresh-request pair yet. - Conflict markers: `git grep -nE '^(<{7}|={7}|>{7})' -- docs core patches changelog.d` answers no line (exit 1). **Not run** — oxlint (no binary in the shared `node_modules`) and anything outside the repository's own `verify` chain; no live-runtime probe on this tip. ## Checkpoint <!-- flybot:checkpoint --> ```json { "pr": 2265, "claim": "Dev2", "issue": 2247, "summary": "The read-only sidebar banner now carries a Reload button in both the wide and the rail shape. It sits beside the status line, not inside the role=status region, so the live region stays text. Pressing it runs the client's new reloadTeam action, which asks the host for a whole team read (no since) so an unchanged revision still re-reads readOnly, and the poll stands back while a reload is in flight. Two new test files cover the control in both shapes, the fresh request, the stale-answer rule and the sidebar error channel.", "files": ["core/src/client/sidebar.js", "core/src/client/sources.js", "core/src/client/index.js", "core/test/sidebar-readonly-reload.test.js", "core/test/client-reload-state.test.js", "docs/subsystems/core-client.md", "changelog.d/2247-readonly-banner-reload.fixed.md"], "checks": { "ran": "node --import ./test/harness-resolve.mjs --test test/sidebar-readonly-reload.test.js test/client-reload-state.test.js; node core/scripts/build-client.mjs --check; node scripts/ds-bot-patches.mjs check", "result": "green", "at": "4cf69b209b4980f9efdfc85998c08a11672cf972" }, "next": "none — ready for review" } ``` <!-- /flybot:checkpoint --> Co-authored-by: Dev-2 <dev2@flybot.local>
Fixes #2273
Written-by: Dev1
Owner: Dev1
Reviewer: Birfy
Claim-Id: c8d7d9828d3d46cd973dd6f1a50bc5e2
Branch: dev/1-p474-board-readonly-hint
Base: 6e5f79a
Tree: 8883f43dd7cf4263a739d48035db4b5c572b50cd
Verified commit: 22bfe12
Pushed head: 22bfe12
Scope
A read-only window's task board already draws no write, but nothing inside the board said why: the host's own read-only sentence lives in the sidebar banner and in the Settings hint, and the 1080px board overlay covers both.
BoardViewnow draws that same host sentence as onerole="status"line above the columns, on the existing.bt-board-hintline, so no new copy and no new style. A writable board draws nothing new, and the read-only board still offers no Add task, no Start / Complete and no draggable card.Changed files (8, +27/−4):
core/src/client/kanban.js(+4/−1) — importhostText, one conditional line and its commentcore/test/kanban.test.js(+5) — two assertions inside the existing P-455 case: a read-only board draws exactly onebt-read-onlyrole="status"line carryinghostText(roster.readOnly), a writable board draws nonecore/client.js(+3) — regenerated bynpm run buildpatches/ds-bot/0008-client-bundle.patch(+4/−1),patches/ds-bot/files/src/client/kanban.js(+4/−1),patches/ds-bot/files/test/kanban.test.js(+5) — regenerateddocs/subsystems/core-client.md(+1/−1) — thekanban.jssubsystem rowchangelog.d/2273-board-readonly-hint.fixed.md(new)Readings at this tip
Red first, on the branch base
6e5f79adwith the test change and nothing else:core/test/kanban.test.js= 28 tests / 27 pass / 1 fail, failing atkanban.test.js:847with actual[]against expected[["status","This window is read-only."]]. In that same case the write-entry assertion had already passed withbuttons: [],newTaskForms: 0,draggable: []— the read-only board's write entry points are 0 before and after this change; what was missing was the sentence. After the fix the file is 28/28/0.Gates on
6e5f79adat this tip:node core/scripts/build-client.mjs --checksilent, exit 0;node scripts/ds-bot-patches.mjs generatetwice, second pass zero writes (sha256sum -c10/10 OK),canonicalsaysgenerate is a no-op,ds-bot-patches checkthree lines ok;TZ=UTC ARCH_DOCS_BASE=6e5f79ade54a npm run verifyexit 0 — core 2700, social 570, tree 132, timeline 140, workflow 411,.github/scripts633, interop 37, live-e2e 26, every suite 0 fail; lint 74 warnings / 0 errors;arch-docs: OK (8 changed file(s)).The verified local commit is
26632f85e2bdda840462ac07c00d6ad60639fde9(tree8883f43d…), the same tree this tip carries;verifyran on that tree. Readings attached at the final tip; this draft reserves the issue and requests no review.